# 1、获取图像的灰度值
# 2、将其写入MIF文件
from chinese_font import chinese_mask
import numpy as np
from PIL import Image


# 打开 MIF 文件并写入头部信息
with open('chinese_3_font.mif', 'w') as mif_file:
    mif_file.write(f"DEPTH = 256;\n")  # 存储器深度，即存储的数据数量：256
    mif_file.write("WIDTH = 128;\n")  # 每个数据的位宽：128位
    # 虽然像素值以十进制形式表示，但位宽决定了每个像素值在存储时所占用的二进制位数。位宽的选择通常与灰度级别的数量有关，而不仅仅是数字的表示形式。
    mif_file.write("ADDRESS_RADIX = UNS;\n")  # 地址的进制：UNS
    mif_file.write("DATA_RADIX = HEX;\n")  # 数据的进制：10进制DEC 无符号10进制UNS 2进制BIN 8进制OCT 16进制HEX
    mif_file.write("CONTENT\n")
    mif_file.write("BEGIN\n")

    addr = 128
    cnt = 0 
    tmp_data = ""
    # 遍历图像的每个像素，并将其写入 MIF 文件
    li = []
    
    font_len = 11
    
    half_fonts = []
    
    for i in range(2*font_len):
        half_fonts.append(chinese_mask[i::2*font_len])
    
    
    
    for item in half_fonts:
        tmp_data = ""
        for i in item:
            str_tmp = hex(i)[2:]
            if len(str_tmp) % 2 == 1:
                tmp_data = "0" + str_tmp + tmp_data
            else:
                tmp_data = str_tmp + tmp_data           
        
        mif_file.write(f"    {addr} : {tmp_data};\n")
        addr += 1 

    print(addr)
    mif_file.write(f"    [{addr}..255] : {00000000000000000000000000000000};\n")        
    
    # 写入 MIF 文件的结尾
    mif_file.write("END;\n")
